/*********************************************************************
 * std::bind的一般用法总结：
 * 1、什么是bind
 *    bind使用占位符或者变量，将原函数绑定成一个仿函数，继而仿函数就可以
 *    作为新的函数使用。
 * 2、为什么需要bind
 *     有时候需要使用一种回调函数类型，回调多个函数，但是多个函数之间参数形式
 *     不同，此时就可以使用bind将其变为一致的！！
 * 3、如何使用bind
 *    见下述实现
 * ******************************************************************/
#include "common.h"

int show_val(int age, char sex, int high)
{
    printf("age = %d, sex = %c, high = %d\n", age, sex, high);
}

int main()
{
    auto func1 = std::bind(show_val, 15, 'm', 183);
    func1();

    auto func2 = std::bind(show_val, std::placeholders::_1, 'w', 167);
    func2(23);

    auto func3 = std::bind(show_val, std::placeholders::_2, std::placeholders::_1, 187);
    func3('m', 25);

    return 0;
}